package 泛型;


// 如何实现一个 通用顺序表？？？


import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

class MyArrayList {
    //创建一个只能放 整形的顺序表
    private int[] elem;
    private int size;

    public MyArrayList() {
        this.elem=new int[10];
    }

    public void add(int a) {
        this.elem[size++]=a;
    }

    public int getPos(int pos) {
        return this.elem[pos];
    }
}


//1.类名后加 <T> 代表当前类是一个 泛型类
//2.不能 new 泛型类的数组！！！
class MyArrayList2 <T> {
    public T[] arr;
    public int size;

    public MyArrayList2() {
        //this.arr = new T[10]; 错的！
        this.arr=(T[]) new Object[10];  //注意强转
    }

    public void add(T val) {
        this.arr[size++] =val;
    }

    public T getPos(int pos) {
        return this.arr[pos];
    }
}

public class Demo1 {
    public static void main(String[] args) {
        MyArrayList2<Integer> myArrayList2 = new MyArrayList2<>();

        ArrayList<Object> list1 = new ArrayList<>(); //无参构造
        ArrayList<Object> list2 = new ArrayList<>(30); // 指定顺序表初始容量 list2的初始大小为30
        ArrayList<Object> list3 = new ArrayList<>(list1); //利用其他Collection构建 list3


        Integer a=10;

        List<Integer> list=new ArrayList<>();
        list.add(10);
        list.add(5);
        list.add(4);
        list.add(9);


        //迭代器
        Iterator<Integer> it=list.iterator();
        while (it.hasNext()) {

            System.out.println(it.next());
            it.remove();
        }
        System.out.println(list);
    }
}
